در PLCهای زیمنس خانواده SIMATIC S7-300 و S7-400، علاوه بر بلوکهایی که توسط برنامهنویس ایجاد میشوند، مجموعهای از توابع سیستمی نیز وجود دارد که مستقیماً توسط سیستم عامل CPU در اختیار کاربر قرار میگیرند. این توابع با نام SFC یا System Function شناخته میشوند. برای آشنایی کامل با ساختار SFC ها با این مقاله تخصصی از الکترونت همراه باشید.
بسیاری از عملیات مهم در PLC مانند خواندن ساعت CPU،
انتقال سریع دادهها، دسترسی به اطلاعات سیستم، ارتباط با تجهیزات Remote I/O،
مدیریت حافظه و دریافت وضعیت ماژولها از طریق SFCها انجام میشود.
در واقع SFCها پلی میان برنامه کاربر و سیستم عامل PLC هستند و امکان دسترسی به قابلیتهایی را فراهم
میکنند که از طریق دستورات معمول برنامهنویسی قابل پیادهسازی نیستند.
SFC چیست؟
SFC مخفف
عبارت: System Function است.
این توابع بخشی از Firmware و سیستم عامل CPU هستند و توسط شرکت زیمنس از پیش طراحی و در
حافظه سیستم
PLC قرار داده شدهاند.
برنامهنویس تنها میتواند آنها را فراخوانی
کند و امکان مشاهده یا تغییر الگوریتم داخلی آنها وجود ندارد.
به بیان ساده، SFCها
مجموعهای از سرویسهای آماده هستند که سیستم عامل PLC برای انجام عملیات خاص در اختیار برنامه قرار میدهد.
به عنوان مثال:
· خواندن تاریخ و ساعت CPU
· انتقال داده بین حافظهها
· خواندن وضعیت کارتهای سختافزاری
· دسترسی به اطلاعات شبکه
· ارتباط با تجهیزات PROFIBUS و
PROFINET
· مدیریت Data Blockها
همگی از طریق SFCها انجام میشوند.
چرا SFCها ایجاد شدهاند؟
فرض
کنید زیمنس میخواست امکان خواندن ساعت
CPU را در اختیار برنامهنویس قرار دهد.
اگر قرار بود هر برنامهنویس خودش این قابلیت را
پیادهسازی کند:
· پیچیدگی برنامه افزایش پیدا میکرد.
· احتمال بروز خطا زیاد میشد.
· دسترسی مستقیم به منابع سیستم ممکن نبود.
بنابراین زیمنس این قابلیتها را در سطح سیستم
عامل پیادهسازی کرده و آنها را به صورت توابع آماده در اختیار برنامهنویس قرار
داده است.
در نتیجه:
· سرعت اجرا افزایش مییابد.
· پایداری سیستم بیشتر میشود.
· استانداردسازی پروژهها امکانپذیر میشود.
· دسترسی به امکانات داخلی CPU آسانتر خواهد بود.
تفاوت FC و
SFC
یکی از
سوالات رایج در آموزش
STEP7 تفاوت FC و
SFC است.
در نگاه اول هر دو به صورت یک تابع فراخوانی میشوند اما ماهیت آنها کاملاً متفاوت است. FC توسط برنامهنویس نوشته میشود و کد آن در پروژه ذخیره میگردد. برنامهنویس میتواند هر زمان که بخواهد منطق داخلی FC را تغییر دهد.
اما
SFC بخشی از سیستم عامل CPU است و کد آن در Firmware زیمنس قرار دارد. برنامهنویس تنها میتواند آن
را فراخوانی کند و هیچ دسترسی به ساختار داخلی آن ندارد.
به عبارت دیگر:
FC محصول
برنامهنویس است.
SFC محصول
سیستم عامل
PLC است.
برای مثال اگر بخواهیم یک الگوریتم محاسبه دبی
بنویسیم معمولاً از FC
استفاده میکنیم.
اما اگر بخواهیم ساعت داخلی CPU را بخوانیم باید از SFC1 استفاده کنیم زیرا این قابلیت در اختیار سیستم عامل PLC قرار دارد.
تفاوت SFC با FB
و
SFB
برای درک بهتر SFC لازم است تفاوت آن با FB و
SFB نیز مشخص شود.
FBها
برای اجرای منطقهایی استفاده میشوند که نیاز به ذخیره وضعیت داخلی دارند.
به همین دلیل هر FB به یک Instance DB نیاز دارد تا اطلاعات خود را در آن ذخیره کند.
SFBها نیز
نسخه سیستمی FB
هستند و توسط زیمنس ارائه میشوند اما همچنان
برای نگهداری دادههای داخلی به
Instance DB نیاز دارند.
در مقابل SFCها هیچ اطلاعات پایداری را ذخیره نمیکنند و به
همین دلیل به
Instance DB احتیاج ندارند.
این موضوع باعث میشود SFCها سبکتر بوده و اجرای آنها سریعتر انجام شود.
آیا SFC به Instance DB نیاز دارد؟ خیر.
این یکی از مهمترین ویژگیهای SFCها است.
SFCها هیچ Instance DB ندارند.
دلیل این موضوع آن است که اطلاعات مورد نیاز آنها
توسط سیستم عامل
CPU مدیریت میشود.
وقتی برنامهنویس یک SFC را فراخوانی میکند:
· سیستم عامل پارامترها را دریافت میکند.
· عملیات مورد نظر را اجرا میکند.
· نتیجه را به برنامه بازمیگرداند.
در این فرآیند نیازی به ذخیره اطلاعات داخلی در
یک DB
اختصاصی وجود ندارد.
به همین دلیل هنگام فراخوانی SFCها تنها شماره تابع مشاهده میشود و هیچ Instance DB در کنار آن ایجاد نمیگردد.
SFC چگونه
اجرا میشود؟
برای درک این موضوع باید ساختار اجرای PLC را بررسی کنیم.
در هر سیکل اسکن CPU،
سیستم عامل
PLC وظایف مختلفی را مدیریت میکند:
· مدیریت حافظه
· ارتباطات شبکه
· پردازش وقفهها
· مدیریت ماژولها
· اجرای برنامه کاربر
هنگامی که CPU به دستور فراخوانی SFC میرسد، کنترل به سیستم عامل منتقل میشود.
سیستم عامل عملیات مورد نظر را اجرا کرده و
نتیجه را به برنامه بازمیگرداند.
به همین دلیل گفته میشود:
SFCها توسط سیستم عامل CPU اجرا میشوند.
نه توسط کد نوشته شده توسط کاربر.
این ویژگی باعث میشود عملکرد آنها بسیار
پایدار، سریع و استاندارد باشد.
ساختار فراخوانی SFC
تمام
SFCها از طریق دستور CALL فراخوانی میشوند.
در زمان فراخوانی، پارامترهای ورودی و خروجی
تابع مشخص میشوند و سیستم عامل عملیات را انجام میدهد.
به عنوان مثال در تابع معروف SFC1 (READ_CLK)،
برنامهنویس تنها درخواست خواندن زمان را صادر میکند و سیستم عامل CPU وظیفه دسترسی به ساعت داخلی و بازگرداندن نتیجه
را بر عهده میگیرد.
در واقع برنامهنویس جزئیات اجرای تابع را نمیبیند
و فقط از سرویس ارائه شده توسط سیستم عامل استفاده میکند.
مزایای استفاده از SFCها
استفاده از SFCها مزایای متعددی دارد:
· دسترسی مستقیم به قابلیتهای سیستم عامل PLC
· سرعت اجرای بالا
· قابلیت اطمینان زیاد
· استاندارد بودن در تمامی CPUهای زیمنس
· کاهش حجم برنامه
· کاهش خطاهای برنامهنویسی
· دسترسی به امکاناتی که با برنامهنویسی عادی
قابل پیادهسازی نیستند
· سهولت ارتباط با تجهیزات شبکه و سختافزار
به همین دلیل تقریباً در تمامی پروژههای حرفهای STEP7 Classic از
SFCها استفاده میشود.
کاربرد SFCها را میتوان در پنج گروه اصلی تقسیمبندی کرد:
1. مدیریت زمان و ساعت CPU مانند:SFC0 و SFC1 و SFC64
2. ارتباطات شبکه و تجهیزات Remote I/O مانند: SFC14 و SFC15
3. مدیریت حافظه و داده مانند: SFC20 و SFC21 و SFC22 و SFC23 و SFC24
4. دریافت اطلاعات سیستم مانند: SFC6 و SFC51
5. کنترل عملکرد CPUمانند: SFC39 و SFC46
به طور کلی SFCها یکی از مهمترین اجزای سیستم عامل PLCهای زیمنس هستند و امکاناتی را در اختیار برنامهنویس قرار میدهند که بدون دسترسی به سیستم عامل امکان پیادهسازی آنها وجود ندارد.
برخلاف FCها که توسط برنامهنویس نوشته میشوند، SFCها
مستقیماً توسط زیمنس در
Firmware CPU قرار گرفتهاند. این توابع به Instance DB نیاز ندارند، توسط سیستم عامل CPU اجرا میشوند و نقش مهمی در ارتباطات، مدیریت
حافظه، دریافت اطلاعات سیستم و کنترل عملکرد PLC ایفا میکنند.
درک صحیح مفهوم SFC اولین گام برای استفاده حرفهای از توابع سیستمی STEP7 Classic است و مسیر ورود به مباحث پیشرفتهتر مانند SFC20، SFC14، SFC15 و
SFC51 را هموار میکند.
بعد از بخش «آشنایی با SFCها» بخش دوم که معرفی SFC های پرکاربرد را ادامه به محوریت موارد ذیل ادامه خواهیم داد:
· معرفی و تعریف
·کاربردهای صنعتی
· نکات فنی مهم
· مثال کاربردی
معرفی مهمترین SFCهای
STEP7 Classic
SFC0 – SET_CLK
تنظیم ساعت و تاریخ CPU
SFC0 برای تنظیم تاریخ و ساعت داخلی CPU استفاده میشود.
در بسیاری از پروژههای صنعتی، ثبت صحیح زمان وقوع
رویدادها، آلارمها و گزارشهای تولید اهمیت زیادی دارد. در صورتی که ساعت CPU تنظیم نباشد، تمامی اطلاعات ثبتشده دارای زمان
اشتباه خواهند بود.
کاربردها
· تنظیم ساعت PLC پس از راهاندازی
· همگامسازی با SCADA
· هماهنگسازی با NTP Server
· سیستمهای گزارشگیری
مثال صنعتی
در یک نیروگاه، پس از تعویض CPU و راهاندازی مجدد سیستم، ساعت PLC توسط
SFC0 از روی سرور مرکزی تنظیم میشود.
SFC1 – READ_CLK
خواندن ساعت CPU
SFC1 یکی از پرکاربردترین توابع سیستمی زیمنس است.
این تابع زمان و تاریخ فعلی CPU را در قالب DATE_AND_TIME در اختیار برنامه قرار میدهد.
کاربردها
· ثبت زمان آلارمها
· ثبت رخدادهای مهم
· ثبت زمان تولید
· ذخیره زمان وقوع خطا
مثال صنعتی
در یک پالایشگاه هنگام وقوع Trip پمپ، زمان دقیق توقف توسط SFC1 در Data Block ذخیره میشود.
SFC6 – RD_SINFO
خواندن اطلاعات سیستم
این تابع برای دریافت اطلاعات عمومی سیستم و CPU استفاده میشود.
کاربردها
· مانیتورینگ وضعیت CPU
· بررسی سختافزار
· عیبیابی سیستم
· تشخیص وضعیت ماژولها
مثال صنعتی
در یک سیستم مانیتورینگ مرکزی، اطلاعات CPUها توسط SFC6 جمعآوری و نمایش داده میشود.
SFC14 – DPRD_DAT
خواندن داده از تجهیزات Distributed I/O
نام کامل:
Distributed Peripheral Read Data
این تابع برای خواندن داده از تجهیزات Remote I/O در شبکه PROFIBUS و
PROFINET استفاده میشود.
کاربردها
· ET200
· Remote I/O
· VFD
· Soft Starter
· Remote Panel
مزایا
· دریافت سازگار داده
· جلوگیری از خطاهای ارتباطی
· افزایش پایداری شبکه
مثال صنعتی
خواندن وضعیت یک ET200M نصبشده در واحد تقطیر پالایشگاه.
SFC15 – DPWR_DAT
نوشتن داده روی تجهیزات Distributed I/O
نام کامل:
Distributed Peripheral Write Data
این تابع مکمل SFC14 است.
کاربردها
· ارسال Setpoint به درایو
· کنترل تجهیزات فیلدباس
· ارسال فرمان به Remote I/O
مثال صنعتی
ارسال مقدار فرکانس مرجع به اینورتر از طریق PROFIBUS.
SFC20 – BLKMOV
انتقال بلوکی داده
معروفترین و پرکاربردترین SFC در
STEP7
BLKMOV برای کپی سریع داده بین حافظههای مختلف استفاده
میشود.
کاربردها
· انتقال آرایهها
· کپی
Data Block
· انتقال Recipe
· انتقال ساختارهای UDT
مزایا
· سرعت بسیار بالا
· کاهش حجم برنامه
· افزایش خوانایی نرمافزار
مثال صنعتی
کپی
Recipe انتخابشده اپراتور از DB ذخیرهسازی به DB فعال فرآیند.
SFC21 – FILL
مقداردهی گروهی حافظه
این
تابع بخشی از حافظه را با یک مقدار مشخص پر میکند.
کاربردها
· صفر کردن حافظه
· مقداردهی اولیه
· ریست اطلاعات
مثال صنعتی
پاک
کردن کامل بافر آلارم پس از تأیید اپراتور.
SFC22 –
CREAT_DBL
ایجاد Data Block در زمان اجرا
این
تابع امکان ایجاد DB
جدید در حین اجرای PLC را فراهم میکند.
کاربردها
· سیستمهای Recipe
· پروژههای انعطافپذیر
· بانکهای اطلاعاتی پویا
مثال صنعتی
ایجاد خودکار DB برای ذخیره اطلاعات یک Batch جدید.
SFC23 – DEL_DBL
حذف Data Block
برای حذف یک DB از حافظه CPU استفاده میشود.
کاربردها
· آزادسازی حافظه
· حذف
Batchهای قدیمی
· مدیریت Recipeها
مثال صنعتی
حذف خودکار Recipeهای منقضیشده از حافظه PLC.
SFC24 – TEST_DB
بررسی وجود Data Block
این تابع مشخص میکند که آیا DB موردنظر در CPU وجود دارد یا خیر.
کاربردها
· اعتبارسنجی برنامه
· جلوگیری از خطاهای دسترسی
· کنترل وضعیت حافظه
مثال صنعتی
قبل از فراخوانی DB مربوط به محصول، وجود آن بررسی میشود.
SFC39 –
DIS_IRT
غیرفعالسازی Interrupt
برای
غیرفعال کردن وقفههای مشخص
CPU استفاده میشود.
کاربردها
· نگهداری و تعمیرات
· تست سیستم
· کنترل بار پردازشی CPU
مثال صنعتی
در
زمان تعمیر یک زیرسیستم، وقفه مربوطه موقتاً غیرفعال میشود.
SFC46 – STP
توقف CPU
این تابع CPU را به حالت STOP منتقل میکند.
کاربردها
· توقف ایمن سیستم
· حالت
Maintenance
· شرایط اضطراری
هشدار
استفاده نادرست از این تابع میتواند کل فرآیند
را متوقف کند.
مثال صنعتی
توقف کنترلشده PLC قبل از عملیات تعمیرات اساسی.
SFC51 – RDSYSST
خواندن System Status List
یکی از قدرتمندترین توابع تشخیصی زیمنس
نام کامل:
Read System Status List
کاربردها
· تشخیص خطا
· وضعیت شبکه
· وضعیت CPU
· وضعیت کارتهای I/O
· مانیتورینگ پیشرفته
اهمیت
در بسیاری از سیستمهای حرفهای HMI و
SCADA اطلاعات تشخیصی از طریق SFC51 استخراج میشود.
مثال صنعتی
نمایش وضعیت تمامی کارتهای رک PLC در صفحه Diagnostic.
SFC64 –
TIME_TCK
شمارنده Tick سیستم
این تابع تعداد Tickهای داخلی CPU را برمیگرداند.
کاربردها
· اندازهگیری زمان اجرا
· محاسبه Cycle Time
· Benchmark
· تحلیل عملکرد CPU
مزایا
· دقت بسیار بالا
· مناسب پروژههای Real-Time
مثال صنعتی
اندازهگیری
مدت زمان اجرای الگوریتم
PID و محاسبات پیچیده در واحد کنترل توربین.
جمعبندی
نهایی
SFCهای مهم
از میان تمام SFCهای موجود در STEP7 Classic، توابع زیر بیشترین کاربرد صنعتی را دارند:
|
SFC |
اهمیت |
|
SFC1 |
ثبت زمان و تاریخ |
|
SFC14 |
دریافت داده از Remote I/O |
|
SFC15 |
ارسال داده به Remote I/O |
|
SFC20 |
انتقال داده و Recipe |
|
SFC51 |
عیبیابی و Diagnostics |
|
SFC64 |
اندازهگیری زمان و Performance |
در پروژههای نفت، گاز، پتروشیمی، نیروگاهی و
صنایع فرآیندی، تسلط بر
SFC1، SFC14، SFC15، SFC20 و
SFC51 عملاً از الزامات برنامهنویسی حرفهای STEP7 Classic محسوب میشود و بخش قابل توجهی از قابلیتهای
پیشرفته
CPUهای
S7-300 و
S7-400 بر پایه همین توابع سیستمی پیادهسازی میشود.
جمعبندی
SFCها یکی از مهمترین ابزارهای برنامهنویسی حرفهای
در
PLCهای زیمنس S7-300 و
S7-400 هستند و نقش کلیدی در توسعه نرمافزارهای صنعتی
قابلاعتماد، سریع و استاندارد ایفا میکنند. از مدیریت زمان و ساعت CPU گرفته تا ارتباط با تجهیزات Remote I/O، انتقال
داده، مدیریت حافظه و دریافت اطلاعات تشخیصی سیستم، همگی از طریق SFCها به شکلی ساختاریافته و استاندارد در اختیار
برنامهنویس قرار میگیرند.
تسلط بر توابعی مانند SFC1، SFC14، SFC15، SFC20، SFC51 و
SFC64 نهتنها کیفیت نرمافزار PLC را افزایش میدهد، بلکه امکان پیادهسازی پروژههای
پیچیده صنعتی با قابلیت اطمینان بالا را نیز فراهم میکند. به همین دلیل در صنایع
نفت، گاز، پتروشیمی، نیروگاهی، فولاد، آب و فاضلاب، خطوط تولید و ماشینآلات
صنعتی، استفاده صحیح از
SFCها یکی از شاخصهای مهم برنامهنویسی حرفهای
محسوب میشود.
در الکترونت، ما معتقدیم یک پروژه اتوماسیون
صنعتی موفق تنها به انتخاب
PLC و تجهیزات مناسب محدود نمیشود؛ بلکه طراحی صحیح
معماری نرمافزار، استفاده از استانداردهای برنامهنویسی زیمنس، بهینهسازی ساختار
کنترلی و بهرهگیری از قابلیتهای پیشرفته سیستم عامل PLC نقش تعیینکنندهای در پایداری و عملکرد بلندمدت
سیستم دارند.
بر همین اساس، الکترونت با تکیه بر تجربه عملی
در حوزه اتوماسیون صنعتی، آماده ارائه خدمات زیر به صنایع مختلف است:
· طراحی و اجرای پروژههای PLC و
HMI
· برنامهنویسی Siemens STEP7 Classic و
TIA Portal
· طراحی و پیادهسازی سیستمهای PID و کنترل فرآیند
· اجرای پروژههای SCADA و مانیتورینگ صنعتی
· راهاندازی و عیبیابی شبکههای PROFIBUS و
PROFINET
· ارتقاء و بهینهسازی سیستمهای کنترلی موجود
· طراحی و ساخت تابلوهای کنترل و اتوماسیون
· خدمات راهاندازی، تست، پشتیبانی و آموزش تخصصی
اگر به دنبال اجرای یک پروژه اتوماسیون صنعتی با رویکرد مهندسی، مستندسازی استاندارد و پشتیبانی فنی تخصصی هستید، الکترونت آماده همکاری با صنایع نفت، گاز، پتروشیمی، نیروگاهی، آب و فاضلاب، معادن، صنایع غذایی و خطوط تولید صنعتی در سراسر کشور است. برای کسب اطلاعات بیشتر یا تکمیل فرم ثبت سفارش همکاری از اینجا اقدام نمایید و منتظر تماس کارشناسان ما بمانید.
